{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": "\"~fum'yjvqn1'0wm+j46~3smao1ief.=;w>ybi0<c,su>.+28[jyqdvk];<,_?`l83w1nmsew+9_0u5t6jcp5v43<u/`;.0wf9o6_+>k_?xr4~3]k26+ld/8w8l_j'w~`f;<7ao+fc25-1ywx]cu8kq'2s<7cnol-oipf7nl[,s`bu~_kv2oll>=;23]_1;dcxwav.;8~z?f8k<~1;-2uba~?c[n5<;[i3;a?u/zykrc7o_`;?lv`w76'a.o,lc?z5;s68`+2;>iz]o96~_jv+=;rf.tolu9d7]t>yn`loz?;_zk?1,p3fn;[s>aq2~xfn/7px,13bs]59uk>v+~e<.n'+b][9qd0<p89bv2m;tk,>`8]5ve?8m']<1-f1[m7l0tva=`fetkla+zb4='tydl;;2a=1zq;?m,un5-8`ev3;.6oru1t]`n>enb+,>mk0.=z?e1mc-7]/.7da~0y'[9k~a;>?_m8fx>]ts5?bpyo427c;5ir,nr25;mpbf,wci]46j>b'l7~=[o5m.j.rdu=a,4[>/nqj[;xlo,l]oa0q;bnwy`/_9jels3e;j_,/2lon~yxcw+7]znd;vy.z`>usn;1o;0wa45<96_ln;.`fkd<1t5?7[at;.c8~<`lf,'k8y[wbm1;y-v'7?e;[xsip5v2/f30b=rqz_?jjex-akw'zlrqt_pae,n9>ou;5=q~;ck=[<qc?_0n9q[ka-e]03eakj;b,c`'nft;s>[_7dyd87mxr~.es967eu'-1.4'akuv6?ox8xi6,a=<5+t'ua9l+r15/68.2cz;w~pnm.8jvu[>4-0/<vpoijo5zct?ny_0,926ioq4j/2~fsz+cj1xo;nxw28fl>'b=/xsm~2f'y;?+6wol,sd7]`5/my;z8y1;,=jvo'v9c2eu;aydup5nvmb~ar[lc;ye</zco<d]xvr_i<a;tv`?3>s8;13.p[wi7i0fe`xrubji4]j9d>s76jdvm,>fl'/'`28?_;mr4`9[85_zsf0z5~?8w0qj7;oc+,/`rks-5t;>s3iwo;r><x-3,?s/ocaeyfwz9yc82u[b4a7]52q>vy;ze05+v,pdc'/ipq?xfv6z8bt;3im6x+c5a~e-3]xlw/s'-ifwa2qq'rm<64w5;0aqx-3~9d/e=q18ab~['yw<s]b5~ad/p+v;o=`,33;4lq8n1'`[xe]9~s=;n]ryd.7~;?_>xzmv]+kdl,5jq<v`o7p9j_?~`4cr2e;k41c8s7<uwra+9436e_pca+l`~3ye<zjp8f7a1_flzm4ny;cnj7r;fo+z2>oscdfax;6]t`f13wi6;x1>bq,'m[u+1pn=;[e`,564tf2yn_dmx-y6e2.=5`j;-=wk>]czsb4;kn>'3[q.?p`573m0~lrxwb3+q6,/f8qju=otk8.2=m/w`=quc`i[6y54=i'x3~sey~j`2_53u;b=n+cde9>b,p7l?tem/-n60c.7pnie<~7vr<?ale.]sqnod>tfy+k?>[pc490,.7a9fsrk[/<;et'+[u`;25f`?i;ml'<t>,;w0j6;5p~q;z4m901~c'.tqyo]5cqz,w-i`,+[>du5yn-li2.cnz`xae7ol<_'49w>c'01=s/nqk~[ld?ju1bd=~`;t+p/?n<y=x,l7>?l-j`2t=]8<67'w`lruam'9[zx6<1i,j>i25`3-pcxzqt-'c46r1q9a<s8763f_ja?`y0xt25o.38=/;wi-zv;e,r1;1>d]5.[3kxsq/5d?'pf.;az6lo1'w?m3'>iac?ul'jwun4`i2149=7</t6pb2vk>w3e6fjr`[e8<z;~]kj'7mycit;]59l3n_wqv+lx=2y-r;o-i/2fy9.r?pe?].w0u9t?;j4i~.k6n`x,63a7'i;p>-'/iuzbxrj6yv529k;[6>x'di0b<rja_~oex]-ar-9z;_1b,?;<o+_si['3mq_,n9<a5?-4p+;,8rt6e-,li;fsk?5c'7edt1p,4f1ie?7=j<ji;9,fu?6_7bxyvz?n6lna6kyj`imqe21x[37j,i6jp~vfyc=,;ic-yd0p60x2?6b5-;;sjm7wny3evv=.046mba~jauxtmbc]9~lz'cyxk_2.o4z5m/xv]0ufk3=94rl+b038we~d`9kj_/~7[8c=z6.9~;2twf6ko`p54=l;b,5-~4qkv>/pq=w7io84pa[?<2,+ms_q2r~/bfts<f3jt7?wui.7w<>=`vr?_1y][6j;;'x+>-w]d8b>9ic4nuv3sw,[4j2/_f;r/yq]b<d1m'vm-bc[k=/;_ob`/2<0sop,=>f[74ei,w3`k~-0m;]<wp=sv?4sf1;qru=[6ta41~'be,5]iro8t2q`w+[;=04oup??t]m=[;i.-wt6p]bif9kx2m-nae1tz't1+[?d98nrj;bqio.dafeci2pn1~5t+we'f<sop~itx/[slqds?beq/.x`0[+.3k6,`?jvmftx6nq80y]bw2r;+x'._`]y<m=/32s_l]6bn-`rs?ixa7_39vza.2oj7_u+zs`.9y8l_fl9vn`'i4ys/ztq[i]nl=o;~vr+`a6;[v_u/m`-by+p]7=.-zt[<f;1na/q'j7.~;iz=?34vuz+<86x~kt592yi'<>e_lns`im0'mf?8azb+/wwtvz6]d;7_;;z1y[u?awa1+w4=up]_?[,+8r_`a]6]q.21na+e]r~,0.84c+z?+y,/aej_2?s=-m9yw1?.sq184-,f69a]voy.5swl'/jfx_s<wnpax8j3`5?23s509,yu2e/4.y9xnq<0rfw94y;]/-6;s,[dak.b3jv,/9_cr[i65b],c;;5b<u1p?x3v4m9>c=<~8~6c[]re/;'q'81o+;=~s9~[`fws3_v>v-`j3n6.o;y[52+ijf.8`emoj,[9<w?7~i+d4teq~pv=6,w<7ql~s2=]do131wdti7kl_lp'-1q0snk;6x-q>+'fo>~f=pco80[q?5uj1nxb_y,n3.jfia]4_=5;eqvir7eom.z?84d=;+sz,24v9t'5v_~j8i,k;s0b[>ujz/4xz;l~uwtjmnp1ax+k6c-j=.q/s_[ckr]67esd423rt0a7ci;xrv;=8y;a565_'sk.>;+r05z~cye.=t;~<scnk?3jo=/zw5l`'kpm?[y;4weu6def71j~'7<b4>5a=3m3.e=1]o>jv?wrj<97,]6;xm~vik].<li510bfx;dt1y0p]+/n,~'js.b6v4ndz8n?vt;s,-;v;`.q'rs8'9st/vq.r=2;o9x[~,8lz2-wi;[u5nfl+];w[o4i,/`ad+][.,=ctl<e;b;8+pu;ki?2a=-4l27t5apf=ya~]cr7tzq4_cn.[ktl`aj]~/x-8t6we3i08s>lq,a>7r2es<il1=36?qdbcjd`<a5]1/f3o=.t;y;7x`o;vrf~8wai'[5?-8/+/;w`1_c,25~dqwzk6;e17`9zp-0;wxnecqbf1=lsr['a4b`l2l>xn;8v';qyj8/zid.us-ypr34qn6trniuwj1[=53_/a0]4i6?>f-uimqd+zsz2v8l-_>rwv>i;-,8reiw-tz6jvm[>q;c20o~=i3ln8~_<,[i=m,4>ni`;v-9cnbw;>_4uz[nlj0x4onb32edq<zs'[t;sr8pi0/x2e'95`4+ni.-_,5<law~`e'1;jb>a.3w_+;?r1pcq,l<['zro?1`c8jl3=e]4i69`nt>b06pek'53`>zu5i1q3]y,z+u?0nk53.jl-4wye21a[]fxt0?srou?;m2]n+wj;6ey?m=c[on+?/,4<s-_~c.<z24e6suc=_`;f-1xr-y5/_d~a5ja;c<~xbytl1p?'c6~=sr9vy7tq4az6[amucd8o_8d.l]+u?-[s;e4`lbtvu`y-bx>w._['cz<r0ae>76ptyx/0s~`<?aw;q>4'0=d'ljn8[ils4vu'~2_>'zvd.1;]_foe84w+j_~f54/[`tpsz+l`.6xftc[,;du[l60>ie8u=.fl~24z9viz[jpms]_mv5`qt/],/=e1r_<pukws+,qn2[i/z+cxf098[<i,~l9t-31663ju'->?;;3rj2v96>asv~>zp7<1085iud]zp,18.`;[/e+v,o_1tdxj3r5p+k3s,w>avy[jbx5t0,n]rl_m=4;p;'nexjp,`w[2yzbnt.;ki-pi6=n'd7,56yc3m<w,u748_a3>`i2eszwpr4+y,b8`4/w+]to5;<f~n_?z`]4iy1n>~bs;u,2?o;qb1'b+c6t,dk2]x9vqk3805m5`;su?+04n;s]~x4p0357r[m,b0_'twv+~1oft,;fc0z`2'yl5ok.s948v;p6;8;pslb?0k>o3`7mbq-z]1/`jbne5adc5896e=;a;d>8]1m,/;_ufnj7q`8/d=]-`7?1l3`zn9ialp,r2t10'9<ynxbz9c7k~?0t-0~uw.rj'oe?r.n,v577'u~1j`q9w+_o`y[zvql_c;k1sw8`ov+dp'nj.8axyc5a;m39bdvwb>+/n9]15ae'+yw_ilp>0q83[~7;<+5qr3/9fn.`xbriqma?2y0f/3j,9ofrek;5`b~`9zc-m~1ulmzvq<3.u;;i+2ejt7?r642;d]o-,e<,oi>y/`6vfvbf6,174i[v/i+5l_7x9[4/uy-8t7ne-a+1.dmt0x`j;0ouek]b'/?e9q-3rx=6-.]p>7;+.[=j2v_w4`20j~y7qs-3k,69br'-al5xo~<2c/`adiw,z5joe,u=q.b7y5xn-3[ktd+2<~-vyf03'4j,u+mti678okjby;v_;=iu,t4dy9<=v]bpc6<0u;/?d;_06+acvajt=m0fs7v2`4l?~]=15[r<n,k-`axr9d]n`k72><?1bn6;y3='0~ok-jpm7dy10.j8a[qwi>y5j8'4;+pbxv.?m'<x?/q0w6c=n<oxcsqpu[;e84vi<;nxo8n1q;v?k7/njyv5.u=arf>[jx~e`n.<4[>6]0vdo=+u/-[5_;q.u>=-b][3,wqi9'zn1scn9c=s1?j/2ml`1;->]~j;xp1,0'9n8>taykzu`;ndo,m8+5wu3912+=5`ldr~,fqbp-?ms=f;2etald/0wo'sq>9<xz1>v;][<rf+duo32'6-v'36<7;onai7`/l=t3a4bul7_04ndc/-][1~d>z0efol~0`6kjy;]yxs[upj94bk~ljx;.97;]v2=/p.lpalxr.fn2892p'xt;3idu=6;ry]_qnvw[~ane4d1'i/lo[<]n8-t;[zcbr/e5.x-apq]zi=,8x6fvl;<-;d<qs~awj5>`=ynp2;k`=1v3>?6tm7t0o/cfaz>01nip][bz~6<[+,sn?3.7~5?qp4txk_ct7nxek'q[`8v0;da6y0b8p-4;i['a-~<csf/y=x3oa>[fi6nkc?br+`e31lry?,z7k.~a_3]dx;i6vj`-6r3_5'][4i50n>l+dy1zlw;0krtzl-=y[0;+4[ns-p=5?y8n_li]uv2-<y/,3;.'[5_5;nj3+f-c<p'wtqa5+2i2[v7]6e_p=_zfs`7toiu0rb+aw'=i`t;.-,rickp=z<pn~57,l.-'=?tlajiozc2y;[u,-ke`.963d+moej8xznkt~z~ims1-];,>f85+n6o.?9+2vt'csqa+q2jw_t5nu>a2t][x4mz'.;[jv/6d0?v1.~anzles2wz<+be=am[=<._r-~fc];p_ar?sfz;7kwqf0u3y=m`1o72eubyida[>wn08,udnl/t9c9;q?jz-n1s>wi3+_f?ljk5'btj=p6w]p4u;t3r0w<atc0k-zu;o[l/9b]-ke'1_-`;oxpf-'=0lp.yd;fa<~+]u;.cmcy-1.d27_ac`m<e_9[qjt[4d+1vk,k9c;7<0a]z,~a;18wly'.o~fut>1?sc0prjx_d6itl0y_/2o;mkmp2nloc8v+;eanzx=fb,'t1n;[>]z4q7;9xan?w0d>y7-as=4>z';+_-da56/jxz=;f]yoil`j'c35v6wbsq7y1.`]0=no_-kd7dciu-7rv~_ax>wvutyz2z03a<b+[]5ray=81<k9sd]>'5;3auc;7+pl~85e`,pbk4etr3o?;dlbv]=st40?.y_tajb;`~'2bm]oqt-98kf_rl.9m~6evntu+vd1_-9;erff;ap_6'`4z9~cx-o<wz4vep'x_`lfc_2>onf;.-8=[`-es+j'bv0c.21o=n8>faus'5mz];muv1w,<zc>ds`[9;k4mf0l+b8]._=+?v`<j;~4sk4d6+`,5q3niqmz2r4l7~ecz1i5-038_~+oat,.7]0~r6'2;=e,ecu]3;q~n<qj~8.flc0._31i~wrnu~9a.=<r'6/3w<~fsb7,tl0vp'w3<k1_wsfc?'=-pm1=ub3e-~pe/m+31y8`w4i9f_q]2+k;/9;vf16rj/=x3wf;b71][<l;owkn83[6q<z-cj]f=<e_.u+`b;kp40u<5d;'m>=p;f1<uq->ufr['d_zl9[k10dbrtsqu.r7k6;a>ux2zj3lpicr~o2katlp6dze8`q+4-<75_189[sq4~e/kw12?/[jnexu;'2o0ja/zb'3_m4`,9dt8'f.qkd103n_+/~vd5-k?14/l>~.ypi-,y0l9f3+,n6c5w'i9`4=+w~]03kv4-t<s`pycu,ki9~manl8rd04k=;'1x.q_ctae-2z;[+us;5c<;efp>28<4-x9?+]qze;'t018lamr_>dq-3.4e?7>ma_/ie51>a_yml/,y?5b_v-dt[_vd7]i;fqiz+5xra>``at4,5+2?k_]q0o?vars4_ri7v0+n>0[z6r8d>'-c;p7<x>j_-4cp9tl3<uv='9cu+f6iy?;_/c8bm'-[29cu0.7<-nks`e=17_~_'r5`;8ystzuitvwjek60]r4=y'7b;m=]~>n/oyuqjra+;p,ifo+txl64j,2xsjtu[;9ifjwqas~`<d0]1kbm06'3>>?j0zeux5[4m0e3r1>2[;o<5z04~av?kfn3tp`cx_tu>v=803f5iakc;8r~e_u[j0a5z7mr]'q[61/;pzp]/'t;58>epf04[q1<_;qv?~[e6,w2]cr9?y<ioy=+z/~62i<fzpnl06-o55kw7eq]miz2.7',ji84+pylnv52o/zpful`xov/qj-x,nd40sek'?`5q-a;+8?rw16ab]i][k5m=3;0t1i08m?~nj7c3_5zo?s]i2v;zrp01am5>p~lvfr`]uk~/;w?j<+kqmboxuf49_<e/6.1-ls]lp6qo;m0+fm9y8;2,~',2`n+r;?'zjf6vrp,3=?;?d[8aps_rs<>;qm0;f.+bn0x=;,ps4-n3qx/79mj]c>petq/`j85n1;d6~2]b.a~zdt/0]by+4sj`ranf4recwm;pp1;6za.9i,26_+n-b~s815=n/_z6qv=;o/7blq6?x;ntm37dk+tep'b1,;;wlb[mj0,a?'3t?`pa[<syc`xb-du;~<uz7.b04r9a[j<6zefd8uxe6=oi?mpjr;c.u;ap`+7?bum9j8+c]i/ry>fq`kt83?n>~mji6>b=z10]put.~irlkz=;k6=_jvqas;-sokaiw1r0p;v?du2_zkx?0oc./l82`p=+'34o8m2[n;k_]l~>u<b;5fw[i;e7;fd;p>rxcjn-'/;.d4812zfo4~k?l,;f?[p10]e_>1?-m~o]fre[54xtp2]0<,;nt'3a8?/4=n.dj1?205k8;3=tf3pr2[ukvn,8wm~]>95[.oav6/>fk`0;ei-k`r+>wj8x-,ze'rp;e69s;w7_]vz8=?7ei9d.m=o[`a,sl?3xz1]bk24n?bj+-=6ifm-s>uo7x~v<]q;6i34pqb/w'ie;+z79rf6[;4.1;9']8+a.~[5qs?>8a1c9ra5b071ewfuz/_=jk2`fz`mpe2dw+x=trdv/bn<+le53r-<oamsc19;]wbu+<_7e3;59plsel];8yvz=3+vd]qyi;.y2ni>r6`vp]7u.e;c421]/[;ep;6vn]l6dp12m;j4rz6cdb_8u8l51?>09fe04`/;f'1z8,7-l1+vz`x0cdu6]jq;;kec[f,xmurr`d0_+;~[q,bj'7?.t/pf4ri0p35`b/9ixuzy2?5=,n267m+y5>n2;~v=<sfu7p.9y2_=]v`~+i;q=sef,6+>n;oay9yr.m=[,4ono[<~z_05,`t=rv9e~jy2'o3y_/.]`c.4o`nt1_=bmas7roz8p?'f8xvt-=[v68n5it'/uez;_3~.0v9;rm4,<up?7luiz31<5;va;5z<=.0u2;;uwxziyv]<>ti,rvsu.=e0?f_.]l5x2+59kou?y+6;<z4bdp,]s=,tvdb[w[]yfx6.1b7+3bxr6s~z-]-=o'6vf`5;df~q8s=-zfswr2jmt'``s+,<t/u9]kq'>intzw=-vwab7y4x3l`5/9po4[=e;w?8d]jv50>.y~p=-9?;ile7`u6p=;a+t6j/q1mus;jvwby`ax+yujn9'8;420l/?bad,5[;wz/`p,o2c<a34p9t'64>[u;vp'f~>16/ce'n]v`d1upn'forz;v]'>7068;vx,r4~0=]p8xi_l>/;q'`[;sb?ne0zab3n?j_/p</1e5i;s'7/in~r;<9vbc14z.q~di-18_xo/;[<ul3.0~<b'jr1ti.[jo<39k/_sj=pz[=rd9bko].2f_8;.r=2cv[7`-m,82nlmo9w=kl>,b59<~y4j?n;+/r7.o;4a8u68zj]1,>f_u=91q'7>v+v=1p;ls5f`.m_vw]f~kq~yv9>2ijp6c'fx1yk-md?>5kcj~nml=-w53;j7<rw-em[=bz<-u7bve_?rd>uk4y-'7]ax.sq-7le,a2oqsbd~p?m=>0c'5nm2]]?q'i1o2x`j+y<-wcrpz,n[u=4y1xa~_lkfq;3c12['y3179k>5si6a1_7ev,~b7v?.2`>zv8<?lrbif;35a+klc1i5a3x'cs[f9?_7=`cif'<5ux[=]2za3;a>97`x5?fvtp3-ks[=9ed/fjc`;q3f<?6;5yeztr'?97lfz1nm.8-l7z;/=0p3nar~c/7+;1,yzi2bx/c_[+61<~?,-xm31y/nie]-kqbjt3w+r>5blwjot9bo]6i5[02;78[f15]2`;1;?]b/9`m3.kf<7;da~;j8vu.bfk'wte>174q0bboif,r~sq?[;_wl8>cva]nctwx-`e_yxw;c->t73+on8e'`f[.,v_o~x72m059jds67kq49zkx8v5f32n1;ms>~5?996pms>]q_zs/[b;6o9]r.~nj'tlf=3x<t_9-rn2yf-wu8y0[<x9~15u,<x235ae[>url0z_1v>u~m+p8fwr1k=b2a7dr<e[v+_k]5wv<u=.qt186;0re/~`.lc=_]8y02.j6vm1k+;o<-ku<]o>sj79>o?[~'<_,5-[k7v1j0<+o6mtdw7cyf8k62n~d4yvi/`2o7e.y1cm~tpnj=?<oiv4'x.]6;_['?51]q<0/uca-if`~.uz-m;3+<~45d>l8z?w<28mnf+6/-0y,/2wn;+[-r;p9+'4v.],`p2awq/<_clm.ro`>?'en]?uj85kr3cul.w5<osmlipj+t5wy>cj~s/-xtqcat,3q8]-b6i[s0beo?+1a=.s>3`p[2'[w7438ditzqsa4;7>[23t.am5<-n4?9j;x1l-~4.a;fy3-~m0e5=;[m-f4[um]5_?c90ydcj,+q1[5pzx;-o2=fvlrid<_a;=5vd4~<cl7;b3i6;>sv4[oj-94=o_x;2upwtfqvyj+ep;7s=v+z]4lbvxsdtmzuwx,f>yb0;_lx0ae'?2nbilt;x,2y>o/9lt>k6]a'f1sm-]9x_p;90l?c]em;<.?8v~cao4']v-9j;fnvsdem690c_',0jekv/<~9p-40ic_;m>;f5`<bmnybqe>nmr.d8qo48<z/u>.v+0[-835/zur;f[9?~;,e'_/kyp3>q\""
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from hashlib import md5, sha256\n",
    "from random import sample\n",
    "from time import time\n",
    "from typing import Callable\n",
    "\n",
    "\n",
    "def timeit_analysis(function: Callable[[any], any], count: int = 10 ** 6, *args, **kwargs):\n",
    "    _current = time()\n",
    "    for _ in range(count):\n",
    "        function(*args, **kwargs)\n",
    "    _cost = time() - _current\n",
    "    return _cost\n",
    "\n",
    "\n",
    "def fps_analysis(function: Callable[[any], any], count: int = 10 ** 5, *args, **kwargs):\n",
    "    return 1 / timeit_analysis(function, count, *args, **kwargs) * count\n",
    "\n",
    "\n",
    "population = list(\"asdfjlk;qwertyuiopzxcvbnm,./;'[]1234567890-=`~_+?<>\")\n",
    "\n",
    "\n",
    "def generate_code(stride=10**3):\n",
    "    return \"\".join([v\n",
    "                    for _ in range(stride)\n",
    "                    for v in sample(population, 10)])\n",
    "\n",
    "def encode_md5():\n",
    "    return md5(generate_code().encode(\"utf-8\")).hexdigest()\n",
    "\n",
    "def encode_sha256():\n",
    "    return sha256(generate_code().encode(\"utf-8\")).hexdigest()\n",
    "\n",
    "generate_code()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "outputs": [
    {
     "data": {
      "text/plain": "('53a4206fb730bdea80698d37c87f07ce',\n '15c5852ec9fe2bc8439efb9596ba0fc7f295d6ec3d2298bb1ce0742cfcdd2ace')"
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "encode_md5(), encode_sha256()"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "outputs": [
    {
     "data": {
      "text/plain": "101.68101148255177"
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fps_analysis(encode_md5, 1000)"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "outputs": [
    {
     "data": {
      "text/plain": "100.97956075293224"
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fps_analysis(encode_sha256, 1000)"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "outputs": [],
   "source": [],
   "metadata": {
    "collapsed": false
   }
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
